package ENUM;

/**
 * Created by jackie on 2017/3/9.
 */
public enum ColorEnum {
    BLUE("蓝色", 5), GREEN("绿色", 6), RED("红色", 7), YELLOW("黄色", 8);

    private final String name;//只提供get方法，不提供set方法，不然是可以修改的
    private final int value;//或者加final关键字

    ColorEnum(String name, int value) {//默认私有，即无法直接new实例
        this.name = name;
        this.value = value;//这两行注释掉可以发现依旧会构造，使用的是默认初始值
    }

    public static int length() {
        return ColorEnum.values().length;
    }

    public String getName() {
        return name;
    }

    public int getValue() {
        return value;
    }

    public static void main(String[] args) {
//        ColorEnum c1 = new ColorEnum("黑色",5);
        /**
         * enum类型与Class相似但又不同，
         * enum类型由JVM生成单例，且无法通过反射API构造实例
         */
        System.out.println("ColorEnum length: " + ColorEnum.length());
        for (ColorEnum c : ColorEnum.values()
                ) {
            System.out.println(c.name() + ": " + c.ordinal());//枚举常量名及实际存储的值
            System.out.println(c.getName() + ": " + c.getValue() + "\n");//构造的名称和值
        }
    }
}
